package cxy;

import java.util.Scanner;
import java.util.Arrays;

/**
 * 类名固定为 Main
 * 解题思路：0/1 背包问题。
 * 物品：N 个奖品，重量（代价）为其价值 values[i]，价值（收益）为 1 (数量)。
 * 背包容量：rewardLimit (L)。
 * 目标：在总价值不超过 L 的前提下，最大化奖品数量。
 */
public class Main2 {

    // 使用一个非常小的负数表示状态不可达。
    // 在本题中，-1 即可，因为最大数量是非负整数。
    private static final int INF = -1;

    public static void main(String[] args) {
        // 必须使用 java.util.Scanner
        Scanner sc = new Scanner(System.in);

        // 处理多组测试用例
        while (sc.hasNextInt()) {
            // 第一行：奖品数量 N (1 <= N <= 10^4)
            int n = sc.nextInt();

            // 第二行：奖品价值列表 (1 <= values[i] <= 10^4)
            int[] values = new int[n];
            for (int i = 0; i < n; i++) {
                values[i] = sc.nextInt();
            }

            // 第三行：奖品价值限制 L (1 <= L <= 10^4)
            int rewardLimit = sc.nextInt();

            // --- 0/1 背包 DP 初始化 ---

            // dp[j] 表示总价值恰好为 j 时，能获得的最大奖品数量。
            int[] dp = new int[rewardLimit + 1];

            // 用 -1 表示不可达，0 表示总价值为 0 时，可以获得 0 个奖品。
            Arrays.fill(dp, INF);
            dp[0] = 0;

            // --- 0/1 背包 状态转移 (O(N * L)) ---

            // 遍历每一个物品（奖品）
            for (int value : values) {
                // 0/1 背包：倒序遍历背包容量 j
                for (int j = rewardLimit; j >= value; j--) {
                    // 如果 j - value 状态可达 (dp[j - value] >= 0)，才能进行转移
                    if (dp[j - value] != INF) {
                        // dp[j] = max(不选, 选)
                        dp[j] = Math.max(dp[j], dp[j - value] + 1);
                    }
                }
            }

            // --- 寻找最终结果 ---

            // 最终结果是 dp 数组中的最大值，即在总价值不超过 L 的所有可达状态中，最大化的奖品数量。
            int maxQuantity = 0;
            for (int q : dp) {
                // 只考虑可达状态 (q >= 0)
                if (q > maxQuantity) {
                    maxQuantity = q;
                }
            }

            // 输出最大奖品数量
            // 必须使用 System.out.print/println
            System.out.println(maxQuantity);
        }

        sc.close();
    }
}